package serverb.comunicacion;


import java.rmi.Remote;
import java.rmi.RemoteException;
import java.sql.SQLException;
import java.util.Date;
import java.util.Vector;
import server.dominio.Beneficiario;
import server.dominio.Cita;
import server.dominio.Medico;
import server.dominio.Usuario;
import server.excepciones.BeneficiarioInexistenteException;
import server.excepciones.BeneficiarioNoExistenteException;
import server.excepciones.BeneficiarioYaExistenteException;
import server.excepciones.CitaNoValidaException;
import server.excepciones.FechaNoValidaException;
import server.excepciones.MedicoInexistenteException;
import server.excepciones.MedicoNoExistenteException;
import server.excepciones.MedicoYaExistenteException;
import server.excepciones.UsuarioNoExistenteException;
import server.excepciones.UsuarioYaExistenteException;
import server.excepciones.VolanteNoValidoException;






public interface IServidorB extends Remote {
        

        //public void regist(long idSesion);
	public void crear (Beneficiario beneficiario) throws RemoteException, BeneficiarioYaExistenteException, SQLException, Exception;
	public void modificar(Beneficiario beneficiario) throws RemoteException, BeneficiarioNoExistenteException, SQLException, Exception;
        public void eliminar(Beneficiario beneficiario) throws RemoteException, BeneficiarioNoExistenteException, SQLException, Exception;

        public void crear(Medico medico) throws RemoteException, MedicoYaExistenteException, SQLException, Exception;
	public void modificar(Medico medico) throws RemoteException, MedicoYaExistenteException, SQLException, Exception;
        public void eliminar(Medico medico) throws RemoteException, MedicoNoExistenteException, SQLException, Exception;
        public void borrarUsuario(Usuario usuario) throws RemoteException, UsuarioNoExistenteException, SQLException, Exception;


        public void crear(Usuario usuario) throws RemoteException, UsuarioYaExistenteException, SQLException, Exception;
       	public void modificar(Usuario usuario) throws RemoteException, MedicoNoExistenteException, SQLException, Exception;
        public void mensajeAuxiliar(long idSesion, long codigoDeMensaje, Object informacion)  throws RemoteException, Exception;
       	public void modificarM(Usuario usuario) throws RemoteException, MedicoYaExistenteException, SQLException, Exception;
        public void modificarCalendario(Medico medico, Vector<Date> dias, Date horaDesde, Date horaHasta, Medico sustituto) throws RemoteException, MedicoInexistenteException, Exception;

        public void refrescar(Medico medico) throws RemoteException, Exception;


        public void pedirCita(Beneficiario beneficiario, String idMedico, Date fechayHor) throws RemoteException, BeneficiarioInexistenteException, MedicoInexistenteException, FechaNoValidaException, SQLException, Exception;
        public void pedirCita(Beneficiario beneficiario, long idVolante, Date fechayHora) throws RemoteException, BeneficiarioInexistenteException, MedicoInexistenteException, FechaNoValidaException, VolanteNoValidoException, SQLException, Exception;
        public void anularCita(Cita cita) throws RemoteException, CitaNoValidaException, SQLException, Exception;
}
